home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / TP_TOOLS / MOUSE.DOC < prev    next >
Text File  |  1994-05-10  |  18KB  |  521 lines

  1. PROGRAMMING MANUAL
  2. ------------------
  3.   The following list of routines were written to provide mouse support for 
  4. programs written in TURBO PASCAL (version 5.0).  The routines provide support 
  5. for any mouse that adheres to the MicroSoft 2 button standard or to the 
  6. Logitech 3 button standard.  Mouse routines supported include:
  7.  
  8. MOUSE_RESET
  9. MOUSE_SHOW_CURSOR
  10. MOUSE_HIDE_CURSOR
  11. MOUSE_GET_POSITION
  12. MOUSE_SET_POSITION
  13. MOUSE_GET_BUTTON_PRESS
  14. MOUSE_GET_BUTTON_RELEASE
  15. MOUSE_SET_HOR_RANGE
  16. MOUSE_SET_VER_RANGE
  17. MOUSE_SET_DEFAULT_CURSOR
  18. MOUSE_SET_CHECK_CURSOR
  19. MOUSE_SET_HAND_CURSOR
  20. MOUSE_SET_CROSS_CURSOR
  21. MOUSE_SET_CLOCK_CURSOR
  22. MOUSE_SET_TEXT_CURSOR
  23. MOUSE_SET_GRAPHIC_CURSOR
  24. MOUSE_GET_MOTION
  25. MOUSE_LIGHT_PEN_ON
  26. MOUSE_LIGHT_PEN_OFF
  27. MOUSE_SET_USER_TASK
  28. MOUSE_SET_MICKEY_RATIO
  29.  
  30.    The following is a programming example for proper use of the mouse routines:
  31.  
  32. PROGRAM MOUSE_EXAMPLE
  33. {$F+}
  34. USES CRT, DOS, GRAPH, MOUSE
  35. BEGIN
  36.     MOUSE_RESET(TheMouse);
  37.     IF NOT (TheMouse.Exists) THEN WRITELN('Sorry the mouse does not exist.');
  38. END;
  39.  
  40.  
  41. NOTES: 1) The compiler should be set to force FAR calls to insure proper 
  42.           operation of the mouse.
  43.        2) The mouse unit MUST be included on the USES line (along with any 
  44.           other required units).
  45.  
  46.  
  47. PROGRAMMING MANUAL
  48. ------------------
  49. MOUSE_RESET
  50.  
  51. USE              MOUSE_RESET(TheMouse);
  52.  
  53. FUNCTION         Initializes the mouse.
  54.  
  55. ARGUMENTS        TheMouse               :RECORD (Predefined in the MOUSE unit)
  56.                                      
  57.                   TheMouse.Exists       :BOOLEAN
  58.                   Returns true if mouse exists.
  59.                   Returns false if mouse does not exist.
  60.  
  61.                   TheMouse.NoButtons    :INTEGER
  62.                   Returns the number of buttons on the mouse.
  63.  
  64. COMMENTS         MOUSE_RESET should be called before any other mouse function
  65.                  to insure proper operation of the mouse.  Once the mouse has 
  66.                  been initialized the mouse cursor is positioned in the center
  67.                  of the screen.  However, a call to MOUSE_SHOW_CURSOR must be 
  68.                  made before the mouse cursor is visible.
  69.  
  70.  
  71. PROGRAMMING MANUAL
  72. ------------------
  73. MOUSE_SHOW_CURSOR
  74.  
  75. USE              MOUSE_SHOW_CURSOR;
  76.  
  77. FUNCTION         Displays the mouse cursor on the screen.
  78.  
  79. ARGUMENTS        None
  80.  
  81. COMMENTS         None
  82.  
  83.  
  84. PROGRAMMING MANUAL
  85. ------------------
  86. MOUSE_HIDE_CURSOR
  87.  
  88. USE              MOUSE_HIDE_CURSOR;
  89.  
  90. FUNCTION         Removes the mouse cursor from the screen.
  91.  
  92. ARGUMENTS        None
  93.  
  94. COMMENTS         Even though the mouse is not visible it is still
  95.                  functional.
  96.  
  97.  
  98. PROGRAMMING MANUAL
  99. ------------------
  100. MOUSE_GET_POSITION
  101.  
  102. USE              MOUSE_GET_POSITION(StaMouse);
  103.  
  104. FUNCTION         Returns the current mouse cursor position.
  105.  
  106. ARGUMENTS        StaMouse               :RECORD (Predefined in the MOUSE unit)
  107.                                      
  108.                   StaMouse.ButtonStatus :INTEGER
  109.                   Returns current mouse button status.
  110.                         bit 0 = left button
  111.                         bit 1 = right button
  112.                         bit 2 = middle button (if any)
  113.                         A 1 in any of the bits indicates that that mouse
  114.                         button is pressed.
  115.                         A 0 in any of the bits indicates that that mouse
  116.                         button is not pressed.
  117.  
  118.                   StaMouse.Column       :INTEGER
  119.                   Returns the current horizontal position of the mouse
  120.                   cursor.
  121.  
  122.                   StaMouse.Row          :INTEGER
  123.                   Returns the current vertical position of the mouse
  124.                   cursor.
  125.  
  126. COMMENTS         Data is reported in real-time. All mouse cursor position data
  127.                  is returned in pixels whether the computer is in graphics mode
  128.                  or text mode. To convert the returned position data into an   
  129.                  equivalent character position the user can use the following 
  130.                  conversion:                                 
  131.  
  132.                  Horizontal position = TRUNC(StaMouse.Column / 8)
  133.                 
  134.                  Vertical position   = TRUNC(StaMouse.Row / N)
  135.  
  136.                         Where N = 8  (for CGA)
  137.                               N = 14 (for EGA)
  138.  
  139.  
  140. PROGRAMMING MANUAL
  141. ------------------
  142. MOUSE_SET_POSITION
  143.  
  144. USE              MOUSE_SET_POSITION(Column,Row);
  145.  
  146. FUNCTION         Moves the mouse cursor to a specific position.
  147.  
  148. ARGUMENTS        Column                 :INTEGER
  149.                  Specifies a horizontal mouse cursor position.
  150.                  Legal values:  1 to max screen size.
  151.  
  152.                  Row                    :INTEGER
  153.                  Specifies a vertical mouse cursor position.
  154.                  Legal values: 1 to max screen size.
  155.  
  156. COMMENTS         All mouse cursor position data is specified in pixels whether
  157.                  the computer is in graphics mode or text mode. To convert the
  158.                  specified pixel position to an equivalent character position 
  159.                  the user can use the following conversion:
  160.  
  161.                  Horizontal position = TRUNC(character position * 8)
  162.  
  163.                  Vertical position   = TRUNC(character position * N)
  164.                 
  165.                         Where N = 8  (for CGA)
  166.                               N = 14 (for EGA)
  167.  
  168.  
  169. PROGRAMMING MANUAL
  170. ------------------
  171. MOUSE_GET_BUTTON_PRESS
  172.  
  173. USE              MOUSE_GET_BUTTON_PRESS(Button,StaMouse);
  174.  
  175. FUNCTION         Returns mouse button press history.
  176.  
  177. ARGUMENTS        Button                 :INTEGER 
  178.                  Specifies a mouse button of inquiry.
  179.                  Legal values:  0,1,2
  180.                         0 = left button
  181.                         1 = right button
  182.                         2 = middle button (if any)
  183.  
  184.                  StaMouse               :RECORD (Predefined in the MOUSE unit)
  185.  
  186.                   StaMouse.ButtonStatus :INTEGER
  187.                   Returns the current mouse button status.
  188.                         bit 0 = left button
  189.                         bit 1 = right button
  190.                         bit 2 = middle button (if any)
  191.                         A 1 in any of the bits indicates that that mouse button
  192.                         is pressed.
  193.                         A 0 in any of the bits indicates that that mouse button
  194.                         is not pressed.
  195.  
  196.                   StaMouse.OpCount      :INTEGER
  197.                   Returns the number of mouse button presses since this 
  198.                   function was last called.
  199.  
  200.                   StaMouse.Column       :INTEGER
  201.                   Returns the horizontal position of the mouse cursor when
  202.                   the button was last pressed.
  203.  
  204.                   StaMouse.Row          :INTEGER
  205.                   Returns the vertical position of the mouse cursor when
  206.                   the button was last pressed.
  207.  
  208. COMMENTS         A call to MOUSE_GET_BUTTON_PRESS clears the mouse buffer of
  209.                  all mouse history.
  210.  
  211.  
  212. PROGRAMMING MANUAL
  213. ------------------
  214. MOUSE_GET_BUTTON_RELEASE
  215.  
  216. USE              MOUSE_GET_BUTTON_RELEASE(Button,StaMouse);
  217.  
  218. FUNCTION         Returns mouse button release history.
  219.  
  220. ARGUMENTS        Button                 :INTEGER 
  221.                  Specifies a mouse button of inquiry.
  222.                  Legal values:  0,1,2
  223.                         0 = left button
  224.                         1 = right button
  225.                         2 = middle button (if any)
  226.  
  227.                  StaMouse               :RECORD (Predefined in the MOUSE unit)
  228.  
  229.                   StaMouse.ButtonStatus :INTEGER
  230.                   Returns the current mouse button status.
  231.                         bit 0 = left button
  232.                         bit 1 = right button
  233.                         bit 2 = middle button (if any)
  234.                         A 1 in any of the bits indicates that that mouse button
  235.                         is pressed.
  236.                         A 0 in any of the bits indicates that that mouse button
  237.                         is not pressed.
  238.  
  239.                   StaMouse.OpCount      :INTEGER
  240.                   Returns the number of mouse button releases since this 
  241.                   function was last called.
  242.  
  243.                   StaMouse.Column       :INTEGER
  244.                   Returns the horizontal position of the mouse cursor when
  245.                   the button was last released.
  246.  
  247.                   StaMouse.Row          :INTEGER
  248.                   Returns the vertical position of the mouse cursor when
  249.                   the button was last released.
  250.  
  251. COMMENTS         A call to MOUSE_GET_BUTTON_RELEASE clears the mouse buffer of
  252.                  all mouse history.
  253.  
  254.  
  255. PROGRAMMING MANUAL
  256. ------------------
  257. MOUSE_SET_HOR_RANGE     
  258.  
  259. USE              MOUSE_SET_HOR_RANGE(Minimum,Maximum);
  260.  
  261. FUNCTION         Sets the horizontal limits of mouse cursor movement.
  262.  
  263. ARGUMENTS        Minimum                :INTEGER 
  264.                  Specifies the minimum horizontal position allowed.
  265.                  Legal values:  1 to maximum screen size.
  266.  
  267.                  Maximum                :INTEGER                              
  268.                  Specifies the maximum horizontal position allowed.
  269.                  Legal values:  1 to maximum screen size.
  270.  
  271. COMMENTS         It is recommended that the maximum value be larger than the  
  272.                  minimum value.    
  273.  
  274.  
  275. PROGRAMMING MANUAL
  276. ------------------
  277. MOUSE_SET_VER_RANGE     
  278.  
  279. USE              MOUSE_SET_VER_RANGE(Minimum,Maximum);
  280.  
  281. FUNCTION         Sets the vertical limits of mouse cursor movement.
  282.  
  283. ARGUMENTS        Minimum                :INTEGER 
  284.                  Specifies the minimum vertical position allowed.
  285.                  Legal values:  1 to maximum screen size.
  286.  
  287.                  Maximum                :INTEGER                              
  288.                  Specifies the maximum vertical position allowed.
  289.                  Legal values:  1 to maximum screen size.
  290.  
  291. COMMENTS         It is recommended that the maximum value be larger than the  
  292.                  minimum value.    
  293.  
  294.  
  295. PROGRAMMING MANUAL
  296. ------------------
  297. MOUSE_SET_DEFAULT_CURSOR
  298.  
  299. USE              MOUSE_SET_DEFAULT_CURSOR;
  300.  
  301. FUNCTION         Sets the mouse cursor to the default (arrow) type.
  302.  
  303. ARGUMENTS        None
  304.                                      
  305. COMMENTS         None
  306.  
  307.  
  308. PROGRAMMING MANUAL
  309. ------------------
  310. MOUSE_SET_CHECK_CURSOR
  311.  
  312. USE              MOUSE_SET_CHECK_CURSOR;
  313.  
  314. FUNCTION         Sets the mouse cursor to the check mark type.
  315.  
  316. ARGUMENTS        None
  317.                                      
  318. COMMENTS         None
  319.  
  320.  
  321. PROGRAMMING MANUAL
  322. ------------------
  323. MOUSE_SET_HAND_CURSOR
  324.  
  325. USE              MOUSE_SET_HAND_CURSOR;
  326.  
  327. FUNCTION         Sets the mouse cursor to the hand type.
  328.  
  329. ARGUMENTS        None
  330.                                      
  331. COMMENTS         None
  332.  
  333.  
  334. PROGRAMMING MANUAL
  335. ------------------
  336. MOUSE_SET_CROSS_CURSOR
  337.  
  338. USE              MOUSE_SET_CROSS_CURSOR;
  339.  
  340. FUNCTION         Sets the mouse cursor to the cross (plus) type.
  341.  
  342. ARGUMENTS        None
  343.                                      
  344. COMMENTS         None
  345.  
  346.  
  347. PROGRAMMING MANUAL
  348. ------------------
  349. MOUSE_SET_CLOCK_CURSOR
  350.  
  351. USE              MOUSE_SET_CLOCK_CURSOR;
  352.  
  353. FUNCTION         Sets the mouse cursor to the clock (hour glass) type.
  354.  
  355. ARGUMENTS        None
  356.                                      
  357. COMMENTS         None
  358.  
  359.  
  360. PROGRAMMING MANUAL
  361. ------------------
  362. MOUSE_SET_TEXT_CURSOR
  363.  
  364. USE              MOUSE_SET_TEXT_CURSOR(CursorType,ScreenMask,CursorMask);
  365.  
  366. FUNCTION         Sets the mouse text cursor type and parameters.
  367.  
  368. ARGUMENTS        CursorType             :WORD
  369.                  Specifies the text cursor type.
  370.                  Legal values:  0 or 1
  371.                         0 = Software cursor (default)
  372.                         1 = Hardware cursor
  373.  
  374.                  ScreenMask             :WORD
  375.                  Specifies the screen mask parameter.
  376.  
  377.                  CursorMask             :WORD   
  378.                  Specifies the cursor mask parameter.       
  379.  
  380. COMMENTS         Two cursors are available. One is the hardware cursor (also 
  381.                  known as the text cursor). The other is the software cursor  
  382.                  (the normal mouse cursor). This function allows the user to  
  383.                  reassign the hardware cursor such that it is under control   
  384.                  of the mouse (the keyboard cursor and the mouse cursor are
  385.                  one and the same). For more information refer to a mouse
  386.                  handbook.
  387.  
  388.  
  389. PROGRAMMING MANUAL
  390. ------------------
  391. MOUSE_SET_GRAPHIC_CURSOR
  392.  
  393. USE              MOUSE_SET_GRAPHIC_CURSOR(XHot,YHot,MaskSeg,MaskOff);
  394.  
  395. FUNCTION         Sets the mouse graphic cursor type and parameters.
  396.  
  397. ARGUMENTS        XHot                   :INTEGER
  398.                  Specifies the graphic cursor horizontal hot spot.
  399.                  Legal values:  -16 to 16
  400.  
  401.                  YHot                   :INTEGER
  402.                  Specifies the graphic cursor vertical hot spot.
  403.                  Legal values:  -16 to 16
  404.  
  405.                  MaskSeg                :WORD
  406.                  Specifies the segment address of the array containing
  407.                  the new cursor.
  408.  
  409.                  MaskOff                :WORD   
  410.                  Specifies the offset address of the array containing
  411.                  the new cursor.
  412.  
  413. COMMENTS         For more information refer to a mouse handbook.
  414.  
  415.  
  416. PROGRAMMING MANUAL
  417. ------------------
  418. MOUSE_GET_MOTION             
  419.  
  420. USE              MOUSE_GET_MOTION(NewMouse);                    
  421.  
  422. FUNCTION         Returns mouse movement history.                      
  423.  
  424. ARGUMENTS        NewMouse               :RECORD (Predefined in the MOUSE unit)
  425.                  
  426.                   NewMouse.HPlace       :INTEGER
  427.                   Returns the horizontal mickey count change since this
  428.                   function was last called.
  429.  
  430.                   NewMouse.VPlace       :INTEGER
  431.                   Returns the vertical mickey count change since this 
  432.                   function was last called.
  433.  
  434. COMMENTS         The mickey count change is defined as the position difference
  435.                  (in mickeys) from the current mouse cursor position to the
  436.                  mouse cursor position at the last call to MOUSE_GET_POSITION.
  437.                  The horizontal and vertical mickey counts are reset to zero
  438.                  whenever this function is called.
  439.  
  440.  
  441. PROGRAMMING MANUAL
  442. ------------------
  443. MOUSE_LIGHT_PEN_ON           
  444.  
  445. USE              MOUSE_LIGHT_PEN_ON;                            
  446.  
  447. FUNCTION         Sets the light pen emulation to on.                  
  448.  
  449. ARGUMENTS        None
  450.  
  451. COMMENTS         This function is seldom required as the MOUSE_RESET function 
  452.                  sets the light pen emulation on by default.
  453.  
  454.  
  455. PROGRAMMING MANUAL
  456. ------------------
  457. MOUSE_LIGHT_PEN_OFF           
  458.  
  459. USE              MOUSE_LIGHT_PEN_OFF;                            
  460.  
  461. FUNCTION         Sets the light pen emulation to off.                  
  462.  
  463. ARGUMENTS        None
  464.  
  465. COMMENTS         This function is seldom required unless one is writting
  466.                  software that will use the mouse and a SEPARATE light
  467.                  pen.
  468.  
  469.  
  470. PROGRAMMING MANUAL
  471. ------------------
  472. MOUSE_SET_USER_TASK     
  473.  
  474. USE              MOUSE_SET_USER_TASK(Mask,TaskSeg,TaskOff);
  475.  
  476. FUNCTION         Used to set up a user defined mouse software interrupt.
  477.  
  478. ARGUMENTS        Mask                   :WORD
  479.                  Specifies the mouse condition(s) that will create
  480.                  the interrupt.
  481.  
  482.                  TaskSeg                :WORD
  483.                  Specifies the segment address of the software interrupt.
  484.  
  485.                  TaskOff                :WORD   
  486.                  Specifies the offset address of the software interrupt.
  487.  
  488. COMMENTS         This function allows the user to define one of their own
  489.                  subroutines as a mouse interrupt. Whenever the condition
  490.                  specified by the Mask occurs the program will automatically
  491.                  route control to the subroutine pointed to by the segment
  492.                  and offset addressed. For more information please refer to
  493.                  a mouse handbook.
  494.  
  495.  
  496. PROGRAMMING MANUAL
  497. ------------------
  498. MOUSE_SET_MICKEY_RATIO  
  499.  
  500. USE              MOUSE_SET_MICKEY_RATIO(Horizontal,Vertical);
  501.  
  502. FUNCTION         Used to adjust the mouse physical movement verses the  
  503.                  mouse cursor movement ratio.
  504.  
  505. ARGUMENTS        Horizontal             :INTEGER
  506.                  Specifies the horizontal movement ratio.
  507.                  Legal values:  1 to 32767
  508.  
  509.                  Vertical                :INTEGER
  510.                  Specifies the vertical movement ratio.
  511.                  Legal values:  1 to 32767
  512.  
  513. COMMENTS         The arguments specify the number of mickeys (unit of mouse
  514.                  movement) per eight screen pixels. The horizontal default
  515.                  is 8 mickeys to 8 pixels. With this ratio the mouse must 
  516.                  move 3.2 inches to move the mouse cursor completely across 
  517.                  the screen. The vertical default is 16 mickeys to 8 pixels.
  518.                  With this ratio the mouse must move 2 inches to move the  
  519.                  mouse completely up or down the screen.
  520.  
  521.